#include <iostream>

using namespace std;

const long long N = 1414220;
long long sum[N];

// 找所在行数
long long max_len(long long n) {
    long long l = 1, r = N;
    while (l <= r) {
        long long mid = (l + r) / 2;
        if ((mid + mid * mid) / 2 < n) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }
    return r + 1;
}

long long get_target(long long value) {
    long long v = max_len(value); // 得到所在行
    long long y = value - (v - 1 + (v - 1) * (v - 1)) / 2;
    long long s_y = (y * y + y) / 2; // 得到当前所在行的和
    long long s_v = sum[v - 1];
    return s_v + s_y;
}

int main() {

    for (long long i = 1; i <= N; ++i) {
        sum[i] = sum[i - 1] + (i + i * i) / 2;
    }

    int t;
    scanf("%d", &t);
    while (t--) {
        long long a, b;
        scanf("%lld %lld", &a, &b);
        printf("%lld\n", get_target(b) - get_target(a - 1));
    }

    return 0;
}